<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js - 循环</title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		// 需求：在控制台打印10次你好
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		console.log('你好');
		// 上面的写法再过‘简单’
		// 利用循环做更简单的写法
		let i = 11; // 初始语句
		while (i < 11) { // 条件语句
			// 循环体（就是需要重复做的事情）
			console.log('w 你好,当前次数：' + i);

			// 循环要点：一定要让循环停止
			i++; // 迭代语句，尽可能放后面
		}
		/* 
		 总结：
			循环：
				1.拥有开始条件
				2.拥有结束条件
				3.拥有循环体
			
			为了不死循环，应该使用在循环体中更改条件语句的变量值
		 
			while特点：先判断后执行
		 */


		// do...while循环  特点:先执行后判断
		let count = 10;
		do {
			// 循环体
			console.log('dw 你好');

			count += 10;
		} while (count < 100);

		/* 
		 
			for循环的执行语句
			1.执行初始语句			（1次）
			2.执行条件判断语句		（ N+1次 ）
			3.循环体					（N次）
			4.迭代语句				（N次）
			5.回到步骤2 ，直到条件不成立
		 */
		// for循环  特点：先判断后执行
		// for(初始语句;条件语句;迭代语句){
		// 循环体
		// }
		// 正常的for
		for (let i = 1; i <= 10; i++) {
			console.log('for 你好');
		}
		// 变种的for
		for (let i = 1; i <= 10;) {
			console.log('for2 你好');
			i++;
		}
		// 变种的for  结论：for循环只需要条件语句即可执行
		let j = 1;
		for (; j <= 10;) { // 初始语句+迭代语句可以不写，但是分号不能少
			console.log('for3 你好');
			j++;
		}

		// 循环控制语句（continue只能在循环中用，break可以在循环和switch中用）
		// 可以让循环停止或者跳过的语句
		// break与continue之后的代码都是不能被执行的
		// 需求：求 1-10之间的奇数和
		let oddSum = 0;
		for (let k = 0; k < 10; k++) {
			if(k % 2 == 0){ // 偶数
				// 不处理任何事情
				// 停止本次循环，开始下一次循环
				continue;
				
			}
			console.log(k);
			// 叠加奇数和
			oddSum += k; // 等价:saoddSum = oddSum +k;
		}
		console.log('0-10的奇数总和：'+oddSum);
		
		// 需求：求1-10的偶数和
		let evenSum = 0;
		for(let k=0;k<100;k++){
			if(k > 10){
				// 停止整个循环
				break;
			}
			if(k % 2 == 0){
				evenSum += k;
			}
		}
		console.log('1-10的偶数和:'+evenSum);
		
		/* 
			需求： 
			第一排一座人的座位为1-1，
			第一排二座人的座位为1-2，
			第一排三座人的座位为1-3，
			第二排一座人的座位为2-1，
			第二排二座人的座位为2-2，
			第二排三座人的座位为2-3，
			第三排一座人的座位为3-1，
			第三排二座人的座位为3-2，
			第三排三座人的座位为3-3，
			
			技术要点：使用多重循环
			结论：多重循环执行时，请记住外循环变量与内循环的变量变化
		 */ 
		for(let k=1;k<4;k++){
			for(let l=1;l<4;l++){
				console.log(k+"-"+l);
			}
		}
		
		// 使用拼接字符串的形式输出，则输出完整字符串
		// 使用“,” 分割进行输出则输出详细对象
		let body = document.body;
		console.log('你好'+body);  // 只能看到字符串
		console.log('你好',body);  // 可以看到对象中的详情
		
		
		
		if(){}
		if(){}
		if(){}
		
		if(){}else if(){}else if(){}
	</script>
</html>
